window.onload=function(){
    getUserType();
}
// 不同的jsp之间是可以拼接的，也可以单独的书写js代码，然后通过标签的形式与当前文件组合
// 实现一个数据请求的功能，根据用户的id查出用户名和密码，前端页面显示查询的结果
// 第一步：页面发起一个ajax请求，请求后台程序返回给定id的用户名密码等信息
function query_name()//定义查询name方法，页面点击相应的按钮就会触发
{
    var idstr = document.getElementById("user_id").value;// 将id为user_id对应的标签里的value值赋给idstr，value值可以通过输入更改
    $.ajax({// ajax方法，来源于jQuery插件，向服务器发起请求，内容是如下的url，dataType
        type:"GET",// 请求方式是GET，表示这是一个从后台获取信息的请求
        url:"/user/getUserById/"+idstr,// 请求url，告诉服务器，请求那个执行哪个方法来获取数据
        // 服务器会拿到这个路径，按照事先定义好的路径查找对应的方法
        // 实际上这个路径就是前端工程师根据后端工程师提供的接口文档确定的
        dataType:"json",//返回数据类型，这个也是根据接口文档确定的，接口文档是后端根据前端的需求讨论制定的
        success:function(data){// 回调函数，ajax是异步刷新，回调函数强制在请求结束之后执行
            // confirm(JSON.stringify(data));// {"id":null,"name":"admin","password":"1qaz1qaz"}
            $.each(data, function(key, val){// 相当于for each循环，遍历返回的jason数据里的键值对
                if(key=="name"){//
                    document.getElementById("user_name").value = val;//获取id为user_name的input的value，赋值给val
                }
                if(key=="password"){//
                    document.getElementById("password").value = val;//获取id为user_name的input的value，赋值给val
                }
            });
        },
        error:function(data){
            alert("输入有误请检查一下")
            // alert(JSON.stringify(data));// 查询失败，返回出错的信息
        }
    });
}
function update_mess() {
    var idstr = document.getElementById("user_id").value;
    var idstr1 = document.getElementById("user_name").value;
    var idstr2 = document.getElementById("password").value;
    // alert("haha");
    $.ajax({
        type: "GET",
        url: "/user/updateUserById",
        data: {"id": idstr, "name": idstr1, "password": idstr2},
        contentType: "application/json",
        // dataType : "json",// 规定了返回值类型就必须返回json否则会进入error，不规定就没事，反正这里用不到
                            // 这里如果确实需要取得返回数据，controller方法要加@ResponseBody，且返回值类型需要是类
                            // 单纯的Sting由于无法转化成JSON，因此即使加了@ResponseBody这里也会进入error
                            // @ResponseBody注解的作用就是自动地将对象的所有属性和对应的值转化为json
        success: function (){

            alert("修改成功");
        },
        error:function () {
            alert("请求失败");
        }
    });
}
function add_mess() {
    var idstr = document.getElementById("add_id").value;
    var namestr = document.getElementById("add_name").value;
    var passwordstr = document.getElementById("add_password").value;
    var typestr = document.getElementById("select_type").value;
    var roleIdstr = document.getElementById("add_roleId").value;
    // 把取出来的值做格式判断，不符合要求的直接alert,然后return
    // alert("haha");
    var reg=/^[1-9]+[0-9]*]*$/;

    if(!reg.test(idstr)||!reg.test(typestr)||!reg.test(roleIdstr)){
        alert("请在id，type，roleid处填写数字");}
    else {
        $.ajax({
            type: "POST",
            url: "/user/addUserById",
            data: {"id": idstr, "name": namestr, "password": passwordstr, "userType": typestr, "roleId": roleIdstr},
            contentType: "application/x-www-form-urlencoded",// post的这里必须这么写，意思是将参数附加在url后面
            // contentType:"application/json",
            // dataType : "json",// 规定了返回值类型就必须返回json否则会进入error，不规定就没事，反正这里用不到
            // 这里如果确实需要取得返回数据，controller方法要加@ResponseBody，且返回值类型需要是类
            // 单纯的Sting由于无法转化成JSON，因此即使加了@ResponseBody这里也会进入error
            // @ResponseBody注解的作用就是自动地将对象的所有属性和对应的值转化为json
            success: function (data) {
                    alert(decodeURI(data));
                },
            error: function (data) {
                alert(JSON.stringify(data));
                alert("发生错误，请联系开发人员");
            },

        });

    }
}
function getUserType()
{//ajax方法
    $.ajax({
        type:"GET",//请求方式
        url:"/user/getOptionList",//请求url
        dataType:"json",//返回数据类型
        data:{"typeId":1},
        success:function(data){
            var obj = document.getElementById("select_type");
            $.each(data, function(key, val){
                var opt = document.createElement("option");
                opt.value = key;
                opt.text = val;
                obj.append(opt);
            });
        },
        error:function(data){
            alert(JSON.stringify(data));
            alert("error");
        }
    });
}